<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //支持 三元运算符 和简单的运算；
        //var flag = true;
        //document.onclick = function(){
        //     flag = !flag;
        //     var str = `我的名字是${flag?'张三':'李四'}`；
        //     console.log(str);
        // }


        // 2.展开运算符；
        // 1.数组的展开；
        //ES5  用的是数组拼接 concat的方法
        // var arr1 = [1,2,3];
        // var arr2 = [4,5,6];
        // var res = arr1.concat(arr2);
        // console.log(res);



        //ES6的方法,相当于先把原来的数组的外壳打破，两个数组组合，在建立一个新的数组
        // var res = [...arr1,...arr2]
        // console.log(res);

        //把伪数组转成数组；核心思想和数组差不多
        // function fn(){
        //     console.log(arguments);
        //     console.log([...arguments]);
        // }
        // fn(1,2,3);


        //把伪数组转成数组；
        // function fn() {
        //     console.log(arguments);
        //     console.log([...arguments]);
        // }
        // fn(1,2,3);


        //获取几个数中最小值；
        // var res = Math.min(3,2,5,8);
        // console.log(res);
        // var arr = [4,1,4,6];
        // var res = Math.min(...arr);
        // console.log(res);


        // 2.对象的展开；
        // let obj1 = {
        //     name:"张三",
        //     age:20
        // }

        // let obj2 = {
        //     height:"178cm",
        //     hobby:"篮球"
        // }


        //一，简单粗暴；循环
        // for(let key in obj2){
        //     obj1[key] = obj2[key];

        // }
        // console.log(obj1);

        //二，通过一个与定义对象方法 Object.assign(obj1,obj2,obj3...);
        // var res = Object.assign(obj1,obj2);
        // console.log(res);


        //3.rest参数和arguments 类似 处理不定参数；
        //rest参数 形式为：...变量名。arguments对象不是数组，只是可以下表访问而已，
        //而rest参数是一个真正的数组
        //如果是一个箭头函数只能用(rest参数)，不是箭头函数 rest参数和argument都可以用

        function fn() {
            // console.log(arguments);
            var myfn = arguments[arguments.length-1];
            if(typeof myfn == "function"){
                myfn();
            }
        }
        function fn(...args){
            var myfn = args[args.length - 1];
            if (typeof myfn == "function") {
                myfn();
            }
        }
            fn(2, function () {
                console.log(2222);
            })
    </script>
</body>

</html>